// 函数的定义

// es5 函数写法
// 函数声明法/具名函数
function run3(){
console.log('123');
}

// 匿名函数
let run4=function(){
  console.log('456');
}

// ts 函数写法  指定返回值类型
// 具名函数
function run5():string{
  return '123'
}
// 匿名函数
let run6=function runs():number{
  return 123
}

// 定义方法传参
function userInfo(name:string,age:number):string{
  return `${name}---${age}` 
}
console.log(userInfo('xioahua',18));

let getInfo2 =function userInfo3(name:string,age:number):string{
  return `${name}---${age}` 
}

// 方法的可选参数 ? 可传可不传
function getDatas(size:number,current?:number):any{
  console.log('1111');
}
console.log(getDatas(1));


// 默认参数  调用方法时方法可以设置默认值
// es5中没法设置默认参数，在es6和ts中都可以设置默认参数
function getUserInfo2(name:string,age:number=20){
  return `${name}`+`${age}`
}


// 剩余参数
function nums3(...result:number[]):number{
  var sum =0
  for(let i =0;i<result.length;i++){
    sum+=result[i]
  }
  return sum
}

// 函数重载

// es5中 如果两个函数名一样，下面的函数会顶替上面的

function getUserInfo4(name:string):string;
function getUserInfo4(age:number):number;
function getUserInfo4(str:any):any{
  if(typeof str=== 'string'){
    return '我是' +str
  }else{
    return '我的年纪' +str
  }
}
alert(getUserInfo4('小花'))   //我是小花
alert(getUserInfo4(18))   //我的年纪18